home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1983-08-18 | 3.8 KB | 77 lines
1 REM SELECTING A RANDOM SAMPLE 2 REM Written by Tracy L. Gustafson, M.D. 3 REM Round Rock, Texas. Version 2.0, 1983 5 DEF SEG=&H40 6 A=PEEK(&H17): IF NOT(A AND &H20) THEN POKE &H17,(A AND (NOT &H20)) OR &H20 7 DEF SEG: KEY OFF: SCREEN 0,0: WIDTH 80: COLOR 7,0,1 10 CLEAR: DEFINT A-C,N,T,Z: DIM CX(10),CC(10),CX!(10) 15 CLS: PRINT TAB(22);"KEY";STRING$(27,205);"CLOSE" 18 PRINT TAB(22);"OPEN SELECTING A RANDOM SAMPLE OPEN" 20 PRINT TAB(22);"SCREEN";STRING$(27,205);"LOAD" 25 PRINT: PRINT: PRINT: PRINT TAB(5);"Do you want to:": PRINT 30 PRINT TAB(10);"1.) Select a SURVEY SAMPLE from a population.":PRINT TAB(15);"Or a subgroup of cases from a larger group.": PRINT 40 PRINT TAB(10);"2.) Assign subjects to 2 groups prospectively." 50 PRINT: PRINT TAB(10);"3.) Assign PAIRED subjects to 2 groups prospectively." :PRINT 60 PRINT TAB(20);: INPUT "Enter choice: ",ASUB: IF ABS(ASUB-2)>1.01 THEN BEEP: GOTO 60 62 PRINT: PRINT: PRINT: PRINT TAB(5);: ON ERROR GOTO 500 65 INPUT "Will you want numbers printed on screen or printer? (S or P) ",A$ 67 IF A$="p" OR A$="P" THEN P$="LPT1:" ELSE IF A$="S" OR A$="s" THEN P$="SCRN:" ELSE 65 70 ON ASUB GOTO 80,200,390 80 CLS: PRINT TAB(24);"SELECT A SURVEY SAMPLE": DEFSNG A,C,Z 85 PRINT TAB(24);STRING$(22,205): PRINT: PRINT TAB(15); 90 INPUT "What is the smallest number you want? ",AMN: PRINT TAB(16); 100 INPUT "What is the largest number you want? ",AMX: PRINT 110 PRINT TAB(7);"How many random numbers between";AMN;"and";AMX;: INPUT "do you want? ",NM 115 ERASE CX: DIM CX(NM+1) 120 OPEN P$ FOR OUTPUT AS #1: PRINT 125 PRINT #1, TAB(16);NM;"RANDOM NUMBERS BETWEEN";AMN;"AND";AMX:PRINT #1, 130 PRINT: COLOR 23: AP=CSRLIN: PRINT TAB(30);"RANDOMIZING";: COLOR 7 135 RANDOMIZE (VAL(RIGHT$(TIME$,2))): NT=1: XN=NM/(AMX-AMN) 140 FOR Z=AMN TO AMX: RN=RND:IF RN<XN THEN CX(NT)=Z:NT=NT+1: IF NT>NM THEN 165 150 NEXT 160 IF NT<=NM THEN 135 165 TB=6: IF AMX>10000 THEN TB=10 166 LOCATE AP,1: PRINT TAB(70) 168 LOCATE AP,1: PLAY "MB T160 O3 L16 D-FA-FD-FA-F L4 D-" 170 T=1: FOR Z=1 TO NM: PRINT #1,TAB(T);CX(Z);: T=T+TB: IF T>75 THEN T=1 180 NEXT: PRINT #1, 190 CLOSE #1: GOTO 470 200 CLS: PRINT TAB(24);"ASSIGN SUBJECTS TO TWO GROUPS" 205 PRINT TAB(24);STRING$(29,205): PRINT: PRINT TAB(12); 210 PRINT " Will subjects enter the study over a period of time ": PRINT TAB(20);:INPUT "longer than 1 month? (Y or N) ",A$: PRINT 220 AF=0: IF A$="y" OR A$="Y" THEN AF=1: PRINT "Then it is preferable to randomize SUBSETS independently to avoid seasonal bias":PRINT TAB(15);"and to asssure equal numbers of cases and controls":PRINT TAB(23);"should the study terminate early.": PRINT 230 PRINT TAB(5);: IF AF=1 THEN INPUT "How many subjects are expected to enter the study each month? ",NM ELSE PRINT TAB(16);:INPUT "How many subjects will be in the study? ",NM 240 ERASE CX,CC: DIM CX(NM/2+1),CC(NM/2+1) 250 OPEN P$ FOR OUTPUT AS #1: PRINT: PRINT 260 PRINT #1, TAB(16);"RANDOM ASSIGNMENT OF";NM;"CASES AND CONTROLS": PRINT #1, 270 RANDOMIZE (VAL(RIGHT$(TIME$,2))): NC=INT(NM/2): NT=1 280 FOR Z=1 TO NM: RN=RND: IF RN<0.5 THEN CX(NT)=Z: NT=NT+1: IF NT>NC THEN 300 290 NEXT: IF NT<=NC THEN 270 300 PRINT #1,"CASES = ";: T=11 310 FOR Z=1 TO NC: PRINT #1,TAB(T);CX(Z);: T=T+7: IF T>75 THEN T=11 320 NEXT: NX=1: NY=1 330 FOR Z=1 TO NM: IF CX(NX)<>Z OR NX>NC THEN CC(NY)=Z: NY=NY+1 ELSE NX=NX+1 340 NEXT 350 PRINT #1,: PRINT #1,: PRINT #1, "CONTROLS =";: T=11 360 FOR Z=1 TO NY-1: PRINT #1,TAB(T);CC(Z);: T=T+7: IF T>75 THEN T=11 370 NEXT: PRINT #1, 380 CLOSE #1: GOTO 470 390 CLS: PRINT TAB(18);"ASSIGN PAIRED SUBJECTS TO TWO GROUPS" 395 PRINT TAB(18);STRING$(36,205): PRINT: PRINT 400 PRINT TAB(12);:INPUT "How many PAIRS of subjects are in the study? ",NM 405 PRINT TAB(7);"Each member of a pair is assigned #1 or #2 on the basis of" 406 PRINT TAB(9);"alphabetical order or some other objective criterion." 410 OPEN P$ FOR OUTPUT AS #1: PRINT: PRINT 420 PRINT #1, TAB(14);"RANDOM ASSIGNMENT OF";NM;"PAIRS TO TWO GROUPS" 430 PRINT #1,: PRINT #1,TAB(20);"#1 IN PAIR";TAB(40);"#2 IN PAIR" 440 RANDOMIZE (VAL(RIGHT$(TIME$,2))): PRINT #1, 450 FOR Z=1 TO NM:RN=RND: IF RN<0.5 THEN PRINT #1,TAB(22);"CASE";TAB(42);"CONTROL" ELSE PRINT #1,TAB(22);"CONTROL";TAB(42);"CASE" 460 NEXT: CLOSE #1 470 PRINT: PRINT: PRINT: PRINT TAB(10);: INPUT "Do you want to perform another randomization? (Y or N) ",A$ 480 IF A$="y" OR A$="Y" THEN 10 490 END 500 IF ERL<>125 AND ERL<>260 AND ERL<>420 THEN 520 510 BEEP: IF ERR=27 OR ERR=25 THEN PRINT TAB(11);"The printer is not ready. Check before proceeding.": PRINT TAB(24);"Press any key when ready:" 515 A$=INKEY$: IF A$="" THEN 515 ELSE RESUME 520 ON ERROR GOTO 0